home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / strategy / xpat2-1.000 / xpat2-1 / xpat2-1.04 / src / r_Gypsy.c < prev    next >
C/C++ Source or Header  |  1994-04-22  |  2KB  |  70 lines

  1. /*****************************************************************************/
  2. /*                                         */
  3. /*                                         */
  4. /*    X patience version 2 -- module r_Gypsy.c                 */
  5. /*                                         */
  6. /*    Characteristics of the ``Gypsy'' rules                     */
  7. /*    written by Heiko Eissfeldt and Michael Bischoff                 */
  8. /*    see COPYRIGHT.xpat2 for Copyright details                 */
  9. /*                                         */
  10. /*                                         */
  11. /*****************************************************************************/
  12. #include "xpatgame.h"
  13.  
  14. static int Gypsy_score(void) {
  15.     Pileindex i;
  16.     Cardindex j;
  17.     int score;
  18.  
  19.     score = 5 * game.ind[rules.numstacks];    /* 2 points for each card on stack */
  20.                     /* offset -4 to have 100 points total */
  21.     for (i = 0; i < rules.numstacks; ++i)
  22.     if (CARDS_ON_PILE(i) == 13)
  23.         score += 60;
  24.     for (i = 0; i < rules.numslots; ++i)
  25.     for (j = game.ind[SLOT(i)]; j < INDEX_OF_LAST_CARD(SLOT(i)); ++j)
  26.         if (game.visible[j] && in_strong_sequence(game.cards[j], game.cards[j+1]))
  27.         score += 2;
  28.     return score >= 0 ? score : 0;
  29. }
  30.  
  31.  
  32. struct rules Gypsy_rules = {    /* Heiko's & Michael's rules */
  33.     "Gypsy",    /* shortname */
  34.     "Gypsy - Heiko's and Michael's patience",/* longname */
  35.     NULL,       /* abbrev */
  36.     0,        /* layout_hints */
  37.     0,        /* variant */
  38.     CUSTOM_STD, /* customizable */
  39.     0,        /* customized */
  40.     104,    /* numcards */
  41.     8,        /* numstacks */
  42.     8,        /* numslots */
  43.     0,        /* numtmps */
  44.     2,        /* numdecks */
  45.     13,        /* cards_per_color */
  46.     0,        /* numjokers */
  47.     {0, 0, 0, 0},/* param[1], param[2], param[3] */
  48.     2,        /* facedown */
  49.     1,        /* faceup */
  50.     0,        /* newgame_bits */
  51.     NULL,    /* new_game */
  52.     NULL,    /* game_won */
  53.     NULL,    /* new_cards */
  54.     ES_ALL|US_RA|MG_RA|DC_ALWAYS|ST_ONE|STACK_SOURCE, /* move_bits */
  55.     NULL,    /* deal_cards */
  56.     NULL,    /* undeal_cards */
  57.     NULL,    /* stackable */
  58.     NULL,    /* movevalid */
  59.     NULL,    /* valid */
  60.     NULL,    /* relaxed_valid */
  61.     std_good_hint,/* good_hint */
  62.     NULL,    /* automove */
  63.     Gypsy_score,/* score */
  64.     1000,    /* maxscore */
  65.     {0, 0, 0, 0}, /* paramstring blocks */
  66.     0,        /* used */
  67.     NULL,    /* initfunc */
  68.     NULL,    /* local keyboard bindings */
  69. };
  70.